#ifndef _QUEUE_H_
#define _QUEUE_H_

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "communication_utils.h"
#include "type.h"

// 定义队列数据结构
struct queue_data
{
    int listenfd;            // 监听套接字
    enum device_type d_type; // 设备类型
};
// 定义队列结构体
struct queue
{
    int size; // 队列大小
    struct queue_data data; // 队列数据
    struct queue *next; // 指向下一个节点的指针
    struct queue *last; // 指向最后一个节点的指针
};
/*
功能：队列个数
输入：队列头指针
输出：队列大小
*/
int size(struct queue *que);
/*
功能：判断队列是否为空
输入：队列头指针
输出：1-空，0-非空
*/
int isEmpty(struct queue *que);
/*
功能：创建队列
输入：无
输出：队列头指针
*/
struct queue *create_queue(void);
/*
功能：入队
输入：队列头指针、待入队数据
输出：无
*/
void push(struct queue_data *data, struct queue *que);
/*
功能：出队
输入：队列头指针
输出：无
*/
void pop(struct queue *que);
/*
功能：获取队首元素
输入：队列头指针
输出：队首元素
*/
struct queue_data front(struct queue *que);
/*
功能：销毁队列
输入：队列头指针
输出：无
*/
void destroy_queue(struct queue *que);


#endif
